Tengo un script para una función personalizada que extrae números con sus unidades de medida:
/** * @customfunction */ function EXTRACTMEASUREMENT(input) { // match all words which starts with a number var result = input.match(/\d+[a-zA-Zα-ωΑ-Ω]+\S*/g) // combine array into a string separated with spaces result = result.join(' '); // Remove special characters(except whitespace) in the string result = result.replace(/[^a-zA-Zα-ωΑ-Ω0-9\s]/g, '') return result; }Por ejemplo, tengo un texto en H42 y pongo la función en I42. Funciona así:
Pero es que si pongo en H42 un número pero seguido de un espacio y luego la unidad de medida, la función no lo detecta y por lo tanto ni siquiera lo extrae. Ver ejemplo:
Como puede ver, "12 kg" y "1 L" tienen un espacio en blanco entre ellos. Entonces, la función solo extrae "50gr", que no está separado por un espacio en blanco.
¿Qué puedo hacer para que la función personalizada devuelva los números con sus unidades de medida incluso si están separados por un espacio en blanco? quiero que vuelva
12kg 1L 50gr
al igual que la segunda imagen adjunta.
Solo soy un principiante en esto, así que no sé cómo escribir código. Sería muy útil si pudiera hacer las modificaciones adecuadas a mi script y luego pegarlo en las respuestas.
Probar
=arrayformula(substitute(transpose(query(flatten(split( REGEXREPLACE(A1,"([0-9.,/]+[ ]{0,1}[a-zA-Z1-3/.\-""]+)","♣♦$1♣") ,"♣")),"select * where Col1 like '♦%' ")),"♦",""))o con resultado en una celda
=substitute(textjoin(" - ",true,query(flatten(split( REGEXREPLACE(A1,"([0-9.,/]+[ ]{0,1}[a-zA-Z1-3/.\-""]+)","♣♦$1♣") ,"♣")),"select * where Col1 like '♦%' ")),"♦","")